package com.xnyzc.lhy.didi.entity.order;

import java.math.BigDecimal;

import com.baomidou.mybatisplus.annotation.Version;

import java.time.LocalDateTime;

import com.baomidou.mybatisplus.annotation.TableLogic;

import java.io.Serializable;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

/**
 * 自费叫车订单
 *
 * @author wangshuo
 * @since 2019-10-15
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value = "OaCOrderPersonal对象", description = "自费叫车订单")
public class OaCOrderPersonal implements Serializable {

    public static final String OFFICE_ID = "office_id";
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "订单号")
    private String orderNo;

    @ApiModelProperty(value = "订单类型（0：实时、1：预约、2：代叫）")
    private Integer orderType;

    @ApiModelProperty(value = "订单状态（参见字典表）")
    private Integer orderStatus;

    @ApiModelProperty(value = "是否拼车（0：否、1：是）")
    private Integer isCarpool;

    @ApiModelProperty(value = "拼车人数")
    private Integer carpoolNumber;

    @ApiModelProperty(value = "乘车人手机号")
    private String passengerPhone;

    @ApiModelProperty(value = "预约时间")
    private Date appointment;

    @ApiModelProperty(value = "乘客上车时间")
    private Date orderTime;

    @ApiModelProperty(value = "叫车类型（经济、舒适、商务，豪华参见字典表）")
    private Integer vehicleType;

    @ApiModelProperty(value = "出发地地址")
    private String startAddress;

    @ApiModelProperty(value = "目的地地址")
    private String endAddress;

    @ApiModelProperty(value = "出发地经度")
    private String startLng;

    @ApiModelProperty(value = "出发地纬度")
    private String startLat;

    @ApiModelProperty(value = "目的地经度")
    private String endLng;

    @ApiModelProperty(value = "目的地纬度")
    private String endLat;

    @ApiModelProperty(value = "乘客发单时经度")
    private String clng;

    @ApiModelProperty(value = "乘客发单时纬度")
    private String clat;

    @ApiModelProperty(value = "起步价")
    private BigDecimal startFee;

    @ApiModelProperty(value = "基础费")
    private BigDecimal baseFee;

    @ApiModelProperty(value = "基础补足费")
    private BigDecimal baseSupplementFee;

    @ApiModelProperty(value = "里程费")
    private BigDecimal mileageFee;

    @ApiModelProperty(value = "里程数（总距离）")
    private BigDecimal milageDistance;

    @ApiModelProperty(value = "时长费")
    private BigDecimal durationFee;

    @ApiModelProperty(value = "乘车时长")
    private BigDecimal durationTime;

    @ApiModelProperty(value = "远途费")
    private BigDecimal distanceFee;

    @ApiModelProperty(value = "远途行驶距离")
    private BigDecimal emptyDistance;

    @ApiModelProperty(value = "总金额")
    private BigDecimal totalFee;

    @ApiModelProperty(value = "实付金额")
    private BigDecimal actualFee;

    @ApiModelProperty(value = "优惠券抵扣金额")
    private BigDecimal couponDeductionFee;

    @ApiModelProperty(value = "优惠券ID")
    private Long couponId;

    @ApiModelProperty(value = "价格规则ID")
    private Long rulesId;

    @ApiModelProperty(value = "发票开具状态（0：未开具、1：已开票、2:开票中、3：已作废、4：作废中）")
    private Integer invoiceStatus;

    @ApiModelProperty(value = "用户userID")
    private String userId;

    @ApiModelProperty(value = "司机userID")
    private Long driverId;

    @ApiModelProperty(value = "是否已评论")
    private Integer isComment;

    @ApiModelProperty(value = "支付类型（0支付宝、1微信、2余额）")
    private Integer paymentType;

    @ApiModelProperty(value = "城市ID")
    private String cityId;

    @ApiModelProperty(value = "用户来源")
    private String tag;

    @ApiModelProperty(value = "扩展字段1")
    private String expand1;

    @ApiModelProperty(value = "扩展字段2")
    private String expand2;

    @ApiModelProperty(value = "扩展字段3")
    private String expand3;

    @ApiModelProperty(value = "版本号")
    @Version
    private Long version;

    @ApiModelProperty(value = "是否删除(0:否,1:是)")
    @TableLogic
    private Integer deleted;

    @ApiModelProperty(value = "创建人")
    private String createUser;

    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @ApiModelProperty(value = "更新人")
    private String updateUser;

    @ApiModelProperty(value = "更新时间")
    private Date updateTime;

    @ApiModelProperty(value = "拼车流水号")
    private String carpoolSerialNo;

    @ApiModelProperty(value = "车辆id")
    private Long vehicleId;

    @ApiModelProperty(value = "等待费")
    private BigDecimal awaitFee;

    @ApiModelProperty(value = "服务费")
    private BigDecimal serviceFee;

    @ApiModelProperty(value = "空驶费")
    private BigDecimal emptyDrivingFee;

    @ApiModelProperty(value = "抽成后费用")
    private BigDecimal drawFee;

    @ApiModelProperty(value = "高德猎鹰服务轨迹ID")
    private Integer gpsId;

    @ApiModelProperty(value = "乘车人姓名")
    private String passengerName;

    @ApiModelProperty(value = "1 未邀约 2 - 私人邀约 3 - 公务邀约")
    private Integer invitationType;

    @ApiModelProperty(value = "1 - 邀约人支付 2 - 被邀约人支付")
    private Integer invitationPayType;

    @ApiModelProperty(value = "1 - 邀约人 2 - 被邀约人")
    private Integer invitationPeopleType;

    @ApiModelProperty(value = "详见字典表")
    private Integer invitationStatus;

    @ApiModelProperty(value = "订单渠道(0-普通 1-滴滴 2-同程 3-携程)")
    private Integer orderChannel;

    @ApiModelProperty(value = "滴滴订单号")
    private String didiOrderId;

    @ApiModelProperty(value = "滴滴用户id")
    private String didiUserId;

    @ApiModelProperty(value = "取消订单备注")
    private String cancelReasonRemark;

    @ApiModelProperty(value = "特殊时段费")
    private BigDecimal specialPeriodFee;

    @ApiModelProperty(value = "高峰附加费")
    private BigDecimal peakAddFee;

    @ApiModelProperty(value = "滴滴订单状态（参见字典表）")
    private Integer didiOrderStatus;

    @ApiModelProperty(value = "乘客真实手机号后四位")
    private String passengerPhoneSuffix;

    @ApiModelProperty(value = "预估ID")
    private Long estimateId;

    @ApiModelProperty(value = "服务产品线")
    private String productType;

    @ApiModelProperty(value = "去接乘客时间")
    private Date meetPassengerTime;

    @ApiModelProperty(value = "司机起点")
    private String driverStartAddress;

    @ApiModelProperty(value = "等待乘客上车时间")
    private Date arriveMeetPassengerTime;

    @ApiModelProperty(value = "确认上车时间")
    private Date notarizeTime;

    @ApiModelProperty(value = "到达时间")
    private Date arriveTime;

    @ApiModelProperty(value = "最后司机到达位置")
    private String driverEndAddress;

    @ApiModelProperty(value = "乘客付款时间")
    private Date passengerPayTime;

    @ApiModelProperty(value = "预估价")
    private String estimatePrice;

    @ApiModelProperty(value = "预估时间")
    private BigDecimal estimateTime;

    @ApiModelProperty(value = "预估距离")
    private BigDecimal estimateDistance;

    @ApiModelProperty(value = "预估里程费")
    private BigDecimal estimateNormalFee;

    @ApiModelProperty(value = "预估时长费")
    private BigDecimal estimateTimeFee;

    @ApiModelProperty(value = "预估远途行驶距离")
    private BigDecimal estimateEmptyDistance;

    @ApiModelProperty(value = "预估计价行驶距离")
    private BigDecimal estimateNormalDistance;

    @ApiModelProperty(value = "预计普通时段计费时间")
    private BigDecimal estimateNormalTime;

    @ApiModelProperty(value = "预计远途费")
    private BigDecimal estimateEmptyFee;

    @ApiModelProperty(value = "预估特殊时段费")
    private BigDecimal estimateTimeRateFee;

    @ApiModelProperty(value = "是否退款 1-退款")
    private Integer isRefund;

    @ApiModelProperty(value = "是否改价 1-改价")
    private Integer isChangePrice;

    @ApiModelProperty(value = "取消原因")
    private String cancelReason;

    @ApiModelProperty(value = "业务类型")
    private String businessType;

    @ApiModelProperty(value = "订单取消时间")
    private Date cancelOrderTime;

    @ApiModelProperty(value = "分块上传的uploadId")
    private String uploadId;

    @ApiModelProperty(value = "航班号，接机单必填")
    private String flightNo;

    @ApiModelProperty(value = "航班起飞日期，格式yyyy-MM-dd，接机单必填")
    private String flightDate;

    @ApiModelProperty(value = "航班到达后,延时 [10(含) 至 90(含)]分钟后用车")
    private Integer flightDelayTime;

    @ApiModelProperty(value = "用车模式（0 一口价  1预估价）")
    private String chargeType;
    @ApiModelProperty(value = "ID")
    @TableId(value = "personal_id", type = IdType.INPUT)
    private Long personalId;
    @ApiModelProperty(value = "部门ID")
    private Long officeId;
    @ApiModelProperty(value = "车队司机数量-以此作为车队排名的标准")
    private Integer managerRank;

    @ApiModelProperty(value = "渠道分成比例费用")
    private String channelProportionFee;

    @ApiModelProperty(value = "麒麟分成比例费用")
    private String qilinProportionFee;

    @ApiModelProperty(value = "cp分成比例费用")
    private String cpProportionFee;

    @ApiModelProperty(value = "司机可提现金额比例费用 ")
    private String driverWithdrawalProportionFee;

    @ApiModelProperty(value = "司机违规押金比例费用")
    private String driverViolationProportionFee;

    @ApiModelProperty(value = "订单异常状态：1.套餐外金额不匹配 ")
    private Integer errorStatus;

    @ApiModelProperty(value = "携程通知费用")
    private BigDecimal additionalFee;

    public static final String PERSONAL_ID = "personal_id";

    public static final String ORDER_NO = "order_no";

    public static final String ORDER_TYPE = "order_type";

    public static final String ORDER_STATUS = "order_status";

    public static final String IS_CARPOOL = "is_carpool";

    public static final String CARPOOL_NUMBER = "carpool_number";

    public static final String PASSENGER_PHONE = "passenger_phone";

    public static final String APPOINTMENT = "appointment";

    public static final String ORDER_TIME = "order_time";

    public static final String VEHICLE_TYPE = "vehicle_type";

    public static final String START_ADDRESS = "start_address";

    public static final String END_ADDRESS = "end_address";

    public static final String START_LNG = "start_lng";

    public static final String START_LAT = "start_lat";

    public static final String END_LNG = "end_lng";

    public static final String END_LAT = "end_lat";

    public static final String CLNG = "clng";

    public static final String CLAT = "clat";

    public static final String START_FEE = "start_fee";

    public static final String BASE_FEE = "base_fee";

    public static final String BASE_SUPPLEMENT_FEE = "base_supplement_fee";

    public static final String MILEAGE_FEE = "mileage_fee";

    public static final String MILAGE_DISTANCE = "milage_distance";

    public static final String DURATION_FEE = "duration_fee";

    public static final String DURATION_TIME = "duration_time";

    public static final String DISTANCE_FEE = "distance_fee";

    public static final String EMPTY_DISTANCE = "empty_distance";

    public static final String TOTAL_FEE = "total_fee";

    public static final String ACTUAL_FEE = "actual_fee";

    public static final String COUPON_DEDUCTION_FEE = "coupon_deduction_fee";

    public static final String COUPON_ID = "coupon_id";

    public static final String RULES_ID = "rules_id";

    public static final String INVOICE_STATUS = "invoice_status";

    public static final String USER_ID = "user_id";

    public static final String DRIVER_ID = "driver_id";

    public static final String IS_COMMENT = "is_comment";

    public static final String PAYMENT_TYPE = "payment_type";

    public static final String CITY_ID = "city_id";

    public static final String TAG = "tag";

    public static final String EXPAND1 = "expand1";

    public static final String EXPAND2 = "expand2";

    public static final String EXPAND3 = "expand3";

    public static final String VERSION = "version";

    public static final String DELETED = "deleted";

    public static final String CREATE_USER = "create_user";

    public static final String CREATE_TIME = "create_time";

    public static final String UPDATE_USER = "update_user";

    public static final String UPDATE_TIME = "update_time";

    public static final String CARPOOL_SERIAL_NO = "carpool_serial_no";

    public static final String VEHICLE_ID = "vehicle_id";

    public static final String AWAIT_FEE = "await_fee";

    public static final String SERVICE_FEE = "service_fee";

    public static final String EMPTY_DRIVING_FEE = "empty_driving_fee";

    public static final String DRAW_FEE = "draw_fee";

    public static final String GPS_ID = "gps_id";

    public static final String PASSENGER_NAME = "passenger_name";

    public static final String INVITATION_TYPE = "invitation_type";

    public static final String INVITATION_PAY_TYPE = "invitation_pay_type";

    public static final String INVITATION_PEOPLE_TYPE = "invitation_people_type";

    public static final String INVITATION_STATUS = "invitation_status";

    public static final String ORDER_CHANNEL = "order_channel";

    public static final String DIDI_ORDER_ID = "didi_order_id";

    public static final String DIDI_USER_ID = "didi_user_id";

    public static final String CANCEL_REASON_REMARK = "cancel_reason_remark";

    public static final String SPECIAL_PERIOD_FEE = "special_period_fee";

    public static final String PEAK_ADD_FEE = "peak_add_fee";

    public static final String DIDI_ORDER_STATUS = "didi_order_status";

    public static final String PASSENGER_PHONE_SUFFIX = "passenger_phone_suffix";

    public static final String ESTIMATE_ID = "estimate_id";

    public static final String PRODUCT_TYPE = "product_type";

    public static final String MEET_PASSENGER_TIME = "meet_passenger_time";

    public static final String DRIVER_START_ADDRESS = "driver_start_address";

    public static final String ARRIVE_MEET_PASSENGER_TIME = "arrive_meet_passenger_time";

    public static final String NOTARIZE_TIME = "notarize_time";

    public static final String ARRIVE_TIME = "arrive_time";

    public static final String DRIVER_END_ADDRESS = "driver_end_address";

    public static final String PASSENGER_PAY_TIME = "passenger_pay_time";

    public static final String ESTIMATE_PRICE = "estimate_price";

    public static final String ESTIMATE_TIME = "estimate_time";

    public static final String ESTIMATE_DISTANCE = "estimate_distance";

    public static final String ESTIMATE_NORMAL_FEE = "estimate_normal_fee";

    public static final String ESTIMATE_TIME_FEE = "estimate_time_fee";

    public static final String ESTIMATE_EMPTY_DISTANCE = "estimate_empty_distance";

    public static final String ESTIMATE_NORMAL_DISTANCE = "estimate_normal_distance";

    public static final String ESTIMATE_NORMAL_TIME = "estimate_normal_time";

    public static final String ESTIMATE_EMPTY_FEE = "estimate_empty_fee";

    public static final String ESTIMATE_TIME_RATE_FEE = "estimate_time_rate_fee";

    public static final String IS_REFUND = "is_refund";

    public static final String IS_CHANGE_PRICE = "is_change_price";

    public static final String CANCEL_REASON = "cancel_reason";

    public static final String BUSINESS_TYPE = "business_type";

    public static final String CANCEL_ORDER_TIME = "cancel_order_time";

    public static final String UPLOAD_ID = "upload_id";

    public static final String FLIGHT_NO = "flight_no";

    public static final String FLIGHT_DATE = "flight_date";

    public static final String FLIGHT_DELAY_TIME = "flight_delay_time";

    public static final String CHARGE_TYPE = "charge_type";
}
